package cn.iocoder.yudao.module.api.member.agency;

import cn.iocoder.yudao.module.api.member.agency.enums.AgencyLevelEnum;
import cn.iocoder.yudao.module.api.member.agency.vo.AgencyApplyVO;
import cn.iocoder.yudao.module.api.member.agency.vo.AgencyUserVO;
import jakarta.annotation.Nullable;

import java.util.Map;
import java.util.Set;

/**
 * <pre>
 * OOoO0OOoO0OOOooo0oOOOO0OOOOO0oooOO0ooOOO0Ooooo0OOOOo0ooooO0OOooo0Ooooo0OOOOO
 *  这里是文件说明
 * OOoO0OOoO0OOOooo0oOOOO0OOOOO0oooOO0ooOOO0Ooooo0OOOOo0ooooO0OOooo0Ooooo0OOOOO
 * </pre>
 *
 * @author 山野羡民（1032694760@qq.com）
 * @since 2025/01/14
 */
public interface AgencyUserApi {

    /**
     * 获得招商人员申请信息
     *
     * @param userId 用户编号
     * @return 招商人员申请信息
     */
    AgencyApplyVO getApplyInfo(Long userId);

    /**
     * 获得招商人员信息
     *
     * @param id 招商人员编号
     * @return 招商人员信息
     */
    AgencyUserVO getAgencyUser(Long id);

    /**
     * 获得招商人员信息
     *
     * @param userId 用户编号
     * @return 招商人员信息
     */
    AgencyUserVO getAgencyUserByUserId(Long userId);

    /**
     * 校验招商人员是否有效
     *
     * @param userId 用户编号
     * @param level 级别
     */
    boolean validAgency(Long userId, @Nullable AgencyLevelEnum level);

    /**
     * 校验招商人员是否有效
     *
     * @param agencyId 招商人员编号
     */
    boolean validAgency(Long agencyId);

    /**
     * 获得招商人员 Map
     *
     * @param agencyUserIds 招商人员用户编号集合
     */
    Map<Long, AgencyUserVO> getAgencyUserMap(Set<Long> agencyUserIds);

}
